#include "delay.h"
#include "stm32f10x.h"

void Delay_ms(u32 ms)
{
#ifdef SYSTICK
    SysTick->CTRL=0;
    SysTick->LOAD=9000*ms;
    SysTick->VAL=0;
    SysTick->CTRL |=1<<0;
    u32 stat;
    while(1)
    {
        stat=SysTick->CTRL;
        if((stat&1<<16)||!(stat&1<<0))break;
        
    }
    SysTick->VAL=0;
    SysTick->CTRL &=~(1<<0);
#else
    int i,j,k;
    for(i=0;i<ms;i++)
        for(j=0;j<100;j++)
            for(k=0;k<100;k++);
#endif
}


void Delay_us(int us)
{
#ifdef SYSTICK
    SysTick->CTRL=0;
    SysTick->LOAD=9*us;
    SysTick->VAL=0;
    SysTick->CTRL |=1<<0;
    u32 stat;
    while(1)
    {
        stat=SysTick->CTRL;
        if((stat&1<<16)||!(stat&1<<0))break;
        
    }
    SysTick->VAL=0;
    SysTick->CTRL &=~(1<<0);
#else
    int i,j;
    for(i=0;i<us;i++)
        for(j=0;j<10;j++);
#endif
}
void Delay_Ms(u32 ms)
{
#ifdef SYSTICK
    SysTick->CTRL=0;
    SysTick->LOAD=9000*ms;
    SysTick->VAL=0;
    SysTick->CTRL |=1<<0;
    u32 stat;
    while(1)
    {
        stat=SysTick->CTRL;
        if((stat&1<<16)||!(stat&1<<0))break;
        
    }
    SysTick->VAL=0;
    SysTick->CTRL &=~(1<<0);
#else
    int i,j,k;
    for(i=0;i<ms;i++)
        for(j=0;j<100;j++)
            for(k=0;k<100;k++);
#endif
}


void Delay_Us(int us)
{
#ifdef SYSTICK
    SysTick->CTRL=0;
    SysTick->LOAD=9*us;
    SysTick->VAL=0;
    SysTick->CTRL |=1<<0;
    u32 stat;
    while(1)
    {
        stat=SysTick->CTRL;
        if((stat&1<<16)||!(stat&1<<0))break;
        
    }
    SysTick->VAL=0;
    SysTick->CTRL &=~(1<<0);
#else
    int i,j;
    for(i=0;i<us;i++)
        for(j=0;j<10;j++);
#endif
}
